package ntd.protocol;

import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.log.StaticLog;
import ntd.protocol.bo.Ntd212BO;
import ntd.protocol.context.Context212;
import ntd.tool.ToolCrc16;
import ntd.tool.ToolHex;

import java.util.HashMap;
import java.util.Map;

public class Ntd212Parse {

    public static Context212 parse(String msg) {
        Context212 context212 = Context212.parse(msg);
        context212.setNtd212BO(Ntd212BO.parse(context212.getData()));
        return context212;
    }

    public static String toString(Ntd212BO ntd212BO) {
        // ##0439QN=20220920153448121;ST=21;CN=2061;PW=2322;MN=4107271001;Flag=9;CP=&&DataTime=20220914040000;w01019-Avg=10.095,w01019-Flag=N;w01020-Avg=13.01,w01020-Flag=N;w21001-Avg=1.000,w21001-Flag=N;w21011-Avg=0.309,w21011-Flag=N;w01018-Avg=33.685,w01018-Flag=N;w01014-Avg=3108.15,w01014-Flag=N;w01003-Avg=544.66,w01003-Flag=N;w01009-Avg=6.299,w01009-Flag=N;w01010-Avg=26.02,w01010-Flag=N;w01001-Avg=7.225,w01001-Flag=N;w21003-Avg=0.36,w21003-Flag=N&&8081\r\n
        // QN=20160801090000001;ST=91;CN=9014;PW=123456;MN=010000A8900016F000169DC0;Flag=4;CP=&&&&
        return "";
    }

    public static void main(String[] args) throws Exception {
        // 数据解析测试
//        Context212 parse1 = Ntd212Parse.parse("##0354QN=20230812112000000;ST=32;CN=2051;PW=123456;MN=44030602500003;Flag=4;CP=&&DataTime=20230812111500;h10101-Min=0.39,h10101-Avg=0.39,h10101-Max=0.39,h10101-Flag=N;h10111-Min=0.81,h10111-Avg=0.81,h10111-Max=0.81,h10111-Flag=N;h20101-Min=0.00,h20101-Avg=0.00,h20101-Max=0.00,h20101-Flag=N;h20201-Min=0.3221,h20201-Avg=0.3221,h20201-Max=0.3221,h20201-Flag=N&&9181\r\n");
//        StaticLog.info(parse1.getNtd212BO().to212Str());
//        // 结尾 \n 兼容测试
//        Context212 parse2 = Ntd212Parse.parse("##0354QN=20230812112000000;ST=32;CN=2051;PW=123456;MN=44030602500003;Flag=4;CP=&&DataTime=20230812111500;h10101-Min=0.39,h10101-Avg=0.39,h10101-Max=0.39,h10101-Flag=N;h10111-Min=0.81,h10111-Avg=0.81,h10111-Max=0.81,h10111-Flag=N;h20101-Min=0.00,h20101-Avg=0.00,h20101-Max=0.00,h20101-Flag=N;h20201-Min=0.3221,h20201-Avg=0.3221,h20201-Max=0.3221,h20201-Flag=N&&9181\n");
//        StaticLog.info(parse2.getNtd212BO().to212Str());
//        // 9802 解析测试
//        Context212 parse3 = Ntd212Parse.parse("##0082QN=20230207114652322;ST=32;CN=9802;PW=123456;;Flag=5;CP=&&ExeRtn=ED&&3300\n");
//        StaticLog.info(parse3.getNtd212BO().to212Str());
//        Context212 parse4 = Ntd212Parse.parse("##0082QN=20230207114652322;ST=32;CN=9802;PW=123456;;Flag=5;CP=&&ExeRtn=ED&&3300\r\n");
//        StaticLog.info(parse4.getNtd212BO().to212Str());
//        // 校验位兼容测试
//        Context212 parse5 = Ntd212Parse.parse("##0082QN=20230207114652322;ST=32;CN=9802;PW=123456;;Flag=5;CP=&&ExeRtn=ED&&3\r\n");
//        StaticLog.info(parse5.getNtd212BO().to212Str());
//        // 其他错误报文
//        Context212 parse6 = Ntd212Parse.parse("##0078QN=20230812113001442;ST=21;CN=9015;PW=111111;MN=yw2023020600014;Flag=8;CP=&&&&2F80\n");
//        StaticLog.info(parse6.getNtd212BO().to212Str());
        // 其他错误报文
        Context212 parse7 = Ntd212Parse.parse("##0542ST=102;CN=2061;QN=20230818210301464;PW=123456;MN=41062102;Flag=1;CP=&&DataTime=20230818210000;w01018-Rtd=49.169,w01018-Flag=N;w21003-Rtd=6.783,w21003-Flag=N;w21011-Rtd=0.796,w21011-Flag=N;w21001-Rtd=8.373,w21001-Flag=N;w01018-Err=0000,w01018-Flag=N;w21003-Err=0000,w21003-Flag=N;w21011-Err=0000,w21011-Flag=N;w21001-Err=0000,w21001-Flag=N;w01001-Rtd=7.00,w01001-Flag=N;w01010-Rtd=32.1,w01010-Flag=N;w01009-Rtd=4.07,w01009-Flag=N;w01014-Rtd=3529,w01014-Flag=N;w01003-Rtd=90.09,w01003-Flag=N;f01023-Rtd=16.7,f01023-Flag=N;f01024-Rtd=69.0,f01024-Flag=N;w01019-Rtd=15.376,w01019-Flag=N;w01019-Err=0000,w01019-Flag=N&&BC81\r\n");
        StaticLog.info(parse7.getNtd212BO().to212Str());
    }
}
